home *** CD-ROM | disk | FTP | other *** search
- OPT PREPROCESS,OSVERSION=39
-
- MODULE 'icon', 'dos/dos', 'exec/memory',
- 'intuition/intuition', 'workbench/startup', 'workbench/workbench'
-
- ENUM ERR_NONE, ERR_STG, ERR_CHDV
-
- RAISE ERR_STG IF String()=0
-
- DEF z, vle, ld=0:PTR TO CHAR, sft=0:PTR TO CHAR, spos=1:PTR TO INT,
- epos=2:PTR TO INT, aslBuf[100]:STRING, dtg=0:PTR TO CHAR
-
- PROC main() HANDLE
- DEF fma=0:PTR TO LONG
- checkConfig()
- renumberSpeechFile()
- EXCEPT DO
- IF (fma:=AllocMem(8000000, 0))<>0 THEN FreeMem(fma, 8000000)
- CleanUp()
- ENDPROC
-
- PROC checkConfig()
- DEF olddir, ckstg, argv:PTR TO LONG, rdargs, wbstartup:PTR TO wbstartup,
- wbarg:PTR TO wbarg, ck=0:PTR TO CHAR, dobj:PTR TO diskobject, toolarray
- argv:=[0, 0, 0, 0, 0]
- IF (iconbase:=OpenLibrary('icon.library', 39))<>0
- IF wbmessage=0
- IF rdargs:=ReadArgs('FILEDEVICE/K,SPEECHFILETYPE/K,STARTPOS/K,STOPPOS/K,INCREASE/K', argv, 0)
- IF ck:=StrCmp(UpperStr(argv[0]), 'DH0:', ALL)
- ld:=1
- ELSEIF ck:=StrCmp(UpperStr(argv[0]), 'WORK:', ALL)
- ld:=2
- ELSEIF ck:=StrCmp(UpperStr(argv[0]), 'DF0:', ALL)
- ld:=3
- ELSEIF ck:=StrCmp(UpperStr(argv[0]), 'DF1:', ALL)
- ld:=4
- ELSEIF ck:=StrCmp(UpperStr(argv[0]), 'DF2:', ALL)
- ld:=5
- ELSEIF ck:=StrCmp(UpperStr(argv[0]), 'DF3:', ALL)
- ld:=6
- ENDIF
- IF ck:=StrCmp(UpperStr(argv[1]), 'FNS', ALL)
- sft:=0
- ELSEIF ck:=StrCmp(UpperStr(argv[1]), 'FSS', ALL)
- sft:=1
- ENDIF
- IF argv[2]
- spos:=Val(argv[2])
- IF ((spos<1) OR (spos>1499))
- spos:=1
- ENDIF
- ENDIF
- IF argv[3]
- epos:=Val(argv[3])
- IF (((epos<2) OR (epos>1500)) OR (epos=spos))
- epos:=spos+1
- ENDIF
- ENDIF
- IF ck:=StrCmp(UpperStr(argv[4]), 'YES', ALL)
- dtg:=0
- ELSEIF ck:=StrCmp(UpperStr(argv[4]), 'NO', ALL)
- dtg:=1
- ENDIF
- FreeArgs(rdargs)
- ELSE
- errreq(' Incorrect ARGS Supplied', 'Default ARGS Used')
- ENDIF
- ELSE
- wbstartup:=wbmessage
- wbarg:=wbstartup.arglist
- FOR z:=0 TO wbstartup.numargs-1
- olddir:=-1
- IF wbarg.lock<>0 AND (wbarg.name[]<>0)
- olddir:=CurrentDir(wbarg.lock)
- ENDIF
- IF (wbarg.name[]<>0) AND (dobj:=GetDiskObject(wbarg.name))
- toolarray:=dobj.tooltypes
- IF ckstg:=FindToolType(toolarray, 'FILEDEVICE')
- IF MatchToolValue(ckstg, 'DH0:')
- ld:=1
- ELSEIF MatchToolValue(ckstg, 'WORK:')
- ld:=2
- ELSEIF MatchToolValue(ckstg, 'DF0:')
- ld:=3
- ELSEIF MatchToolValue(ckstg, 'DF1:')
- ld:=4
- ELSEIF MatchToolValue(ckstg, 'DF2:')
- ld:=5
- ELSEIF MatchToolValue(ckstg, 'DF3:')
- ld:=6
- ENDIF
- ENDIF
- IF ckstg:=FindToolType(toolarray, 'SPEECHFILETYPE')
- IF MatchToolValue(ckstg, 'FNS')
- sft:=0
- ELSEIF MatchToolValue(ckstg, 'FSS')
- sft:=1
- ENDIF
- ENDIF
- IF ckstg:=FindToolType(toolarray, 'STARTPOS')
- spos:=Val(ckstg)
- IF ((spos<1) OR (spos>1499))
- spos:=1
- ENDIF
- ENDIF
- IF ckstg:=FindToolType(toolarray, 'STOPPOS')
- epos:=Val(ckstg)
- IF (((epos<2) OR (epos>1500)) OR (epos=spos))
- epos:=spos+1
- ENDIF
- ENDIF
- IF ckstg:=FindToolType(toolarray, 'INCREASE')
- IF MatchToolValue(ckstg, 'YES')
- dtg:=0
- ELSEIF MatchToolValue(ckstg, 'NO')
- dtg:=1
- ENDIF
- ENDIF
- FreeDiskObject(dobj)
- ELSEIF wbarg.name[]=0
- errreq(' ICON Is The Wrong Type', 'Default ARGS Used')
- ELSE
- errreq(' Cannot Find DISKOBJECT', 'Default ARGS Used')
- ENDIF
- IF olddir<>-1
- CurrentDir(olddir)
- ENDIF
- wbarg++
- ENDFOR
- ENDIF
- IF iconbase<>0
- CloseLibrary(iconbase)
- ENDIF
- ELSE
- errreq(' Cannot Open Icon.Library', 'Default ARGS Used')
- ENDIF
- IF ld=0
- StrCopy(aslBuf, 'RAM:')
- ELSEIF ld=1
- StrCopy(aslBuf, 'DH0:')
- ELSEIF ld=2
- StrCopy(aslBuf, 'WORK:')
- ELSEIF ld=3
- StrCopy(aslBuf, 'DF0:')
- ELSEIF ld=4
- StrCopy(aslBuf, 'DF1:')
- ELSEIF ld=5
- StrCopy(aslBuf, 'DF2:')
- ELSEIF ld=6
- StrCopy(aslBuf, 'DF3:')
- ENDIF
- StrAdd(aslBuf, 'LanguageGUI/', ALL)
- ENDPROC
-
- PROC errreq(title:PTR TO CHAR, text:PTR TO CHAR)
- EasyRequestArgs(0, [SIZEOF easystruct, 0, title, text, 'O.K']:easystruct, 0, 0)
- ENDPROC
-
- PROC renumberSpeechFile()
- DEF fh, nl:PTR TO INT, chr:PTR TO CHAR, tmp=0:PTR TO CHAR, ck=0:PTR TO CHAR,
- pos=0:PTR TO CHAR, flname:PTR TO CHAR, fl, sv, vb=1:PTR TO INT,
- ve=1499:PTR TO INT
- chr:=String(4)
- StrCopy(chr, ' ', ALL)
- flname:=String(100)
- StrCopy(flname, ' ', ALL)
- StrCopy(flname, aslBuf, ALL)
- IF sft=0
- StrAdd(flname, 'FNSpeech.Lgui', ALL)
- ELSEIF sft=1
- StrAdd(flname, 'FSSpeech.Lgui', ALL)
- ENDIF
- IF dtg=1
- vb:=2
- ve:=1500
- ENDIF
- WriteF('\n*** SPEECH FILE - \s ***\n\n', flname)
- fl:=FileLength(flname)
- IF fl>21
- tmp:=NewM(fl, MEMF_PUBLIC OR MEMF_CLEAR)
- IF fh:=Open(flname, MODE_OLDFILE)
- nl:=Read(fh, tmp, fl)
- Close(fh)
- IF nl=fl
- REPEAT
- INC pos
- UNTIL ((pos>=fl) OR (Char(tmp+pos)=42))
- IF pos<fl
- pos:=pos+2
- REPEAT
- IF ((Char(tmp+pos)=35) OR (Char(tmp+pos)=37))
- FOR z:=1 TO 4 DO chr[z]:=Char(tmp+pos+z)
- vle:=Val(chr)
- IF ((vle>=vb) AND (vle<=ve))
- IF ((vle>=spos) AND (vle<=epos))
- IF dtg=0
- sv:=chr[4]
- INC sv
- chr[4]:=sv
- IF sv>57
- chr[4]:=48
- sv:=chr[3]
- INC sv
- chr[3]:=sv
- IF sv>57
- chr[3]:=48
- sv:=chr[2]
- INC sv
- chr[2]:=sv
- IF sv>57
- chr[2]:=48
- sv:=chr[1]
- INC sv
- chr[1]:=sv
- IF sv>57
- chr[1]:=48
- ENDIF
- ENDIF
- ENDIF
- ENDIF
- ELSE
- sv:=chr[4]
- DEC sv
- chr[4]:=sv
- IF sv<48
- chr[4]:=57
- sv:=chr[3]
- DEC sv
- chr[3]:=sv
- IF sv<48
- chr[3]:=57
- sv:=chr[2]
- DEC sv
- chr[2]:=sv
- IF sv<48
- chr[2]:=57
- sv:=chr[1]
- DEC sv
- chr[1]:=sv
- IF sv<48
- chr[1]:=57
- ENDIF
- ENDIF
- ENDIF
- ENDIF
- ENDIF
- FOR z:=1 TO 4
- sv:=chr[z]
- PutChar(tmp+pos+z, sv)
- ENDFOR
- ENDIF
- ENDIF
- ELSE
- WriteF('\nError: Speech File is Invalid - An incorrect Character has been found.\n')
- Raise(ERR_CHDV)
- ENDIF
- pos:=pos+6
- IF Char(tmp+pos)<>10
- REPEAT
- INC pos
- UNTIL ((pos>=fl) OR (Char(tmp+pos)=42))
- pos:=pos+2
- ENDIF
- UNTIL pos>=fl
- IF fh:=Open(flname, MODE_NEWFILE)
- nl:=Write(fh, tmp, fl)
- Close(fh)
- IF nl<>fl
- ck:=2
- ENDIF
- ELSE
- ck:=1
- ENDIF
- IF ck>0
- IF ck=1
- WriteF('\n\s was NOT Saved.\n', flname)
- ELSEIF ck=2
- WriteF('\n\s was PARTLY Saved.\n', flname)
- ENDIF
- ELSE
- WriteF('\n\s was Saved.\n', flname)
- ENDIF
- ELSE
- WriteF('\nError: Could not find a * End Marker.\n')
- ENDIF
- ELSE
- WriteF('\nERROR: \s was only Partly Read.\n', flname)
- Raise(ERR_CHDV)
- ENDIF
- ELSE
- WriteF('\nERROR: \s was Not Opened.\n', flname)
- Raise(ERR_CHDV)
- ENDIF
- ELSEIF ((fl>=0) AND (fl<22))
- WriteF('\nERROR: \s was Too Small.\n', flname)
- Raise(ERR_CHDV)
- ELSE
- WriteF('\nERROR: \s was Not Found.\n', flname)
- Raise(ERR_CHDV)
- ENDIF
- IF chr THEN DisposeLink(chr)
- IF flname THEN DisposeLink(flname)
- ENDPROC
-